package com.eupmt.lab3.utils;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author sony
 */
public class Autogenerator {

    //Atributs
    char lletres[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
    String lletresDNI = "TRWAGMYFPDXBNJZSQVHLCKE";
    List<String> noms = null;
    List<String> cognoms = null;
    Log log = null;

    //Constructors
    public Autogenerator() {
        log = new Log();
        // TODO provisional
        noms = new ArrayList<String>();
        noms.add("Xavier");
        noms.add("Santi");
        noms.add("Aarón");
        noms.add("Eduard");
        noms.add("Pere");
        noms.add("Alberto");
        noms.add("Juan Carlos");
        noms.add("Yolanda");
        noms.add("Rut");
        noms.add("Maria Teresa");
        noms.add("Santiago");
        noms.add("Javier");

        // TODO provisional
        cognoms = new ArrayList<String>();
        cognoms.add("Lluch");
        cognoms.add("Urrutia");
        cognoms.add("Leon");
        cognoms.add("Sacristán");
        cognoms.add("Donoso");
        cognoms.add("Sirvent");
        cognoms.add("Urdangarín");
        cognoms.add("Garcia");
        cognoms.add("Lopez");
        cognoms.add("Fernández");
        cognoms.add("Hernández");
        cognoms.add("Rodriguez");
        cognoms.add("Valenzuela");
        cognoms.add("Fàbregas");
        cognoms.add("Molina");
    }

    /**
     * 
     * @return Un enter de vuit xifres com a molt
     */
    public int autoInt() {
        return new Double(Math.random() * 100000000).intValue();
    }

    /**
     *
     * @param cifras nombre de xifres que ha de tenir l'enter retornat
     * @return retorna un enter de n xifres
     */
    public int autoInt(int n) {
        int numMax = new Double(Math.pow(10, n)).intValue();
        return new Double(Math.random() * numMax).intValue();
    }

    /**
     * 
     * @param limit
     * @return
     */
    public int autoIntWithLimit(int limit) {
        return new Double(Math.random() * limit).intValue();
    }

    /**
     *
     * @return float
     */
    public float autoFloat() {
        return new Float(Math.random() * 10000).floatValue();
    }

    /**
     * Aquest mètode genera un nif automaticament composat per vuit xifres
     * numeriques seguitde un caracter de control valid.
     * @return Nif generat automaticament
     */
    public String autoNif() {
        int num = autoInt(8);
        String nif = String.valueOf(num);
        int numLletra = num - ((num / 23) * 23);
        nif += lletresDNI.substring(numLletra, numLletra++);
        return nif;
    }

    public String autoNom() {
        return noms.get(autoIntWithLimit(noms.size()));
    }

    public String autoCognom() {
        return cognoms.get(autoIntWithLimit(cognoms.size()));
    }
//    public String autoS
}
